package com.example.Utils;

import java.security.MessageDigest;
import java.util.Random;
import java.util.UUID;

public class EncryptionUtils {
    /**
     * 获取加密后的密码
     * @param str
     * @return
     */
    public static String getPWD( String str){
        /*
         * 加密需要使用JDK中提供的类
         */
        StringBuffer sb = new StringBuffer();
        try{
            MessageDigest digest = MessageDigest.getInstance("MD5");
            byte[] bs = digest.digest(str.getBytes());
            /*
             *  加密后的数据是-128 到 127 之间的数字，这个数字也不安全。
             *   取出每个数组的某些二进制位进行某些运算，得到一个具体的加密结果
             *
             *   0000 0011 0000 0100 0010 0000 0110 0001
             *  &0000 0000 0000 0000 0000 0000 1111 1111
             *  ---------------------------------------------
             *   0000 0000 0000 0000 0000 0000 0110 0001
             *   把取出的数据转成十六进制数
             */
            for (byte b : bs) {
                int x = b & 255;
                String s = Integer.toHexString(x);
                if( x > 0 && x < 16 ){
                    sb.append("0");
                    sb.append(s);
                }else{
                    sb.append(s);
                }
            }
        }catch( Exception e){
            System.out.println("加密失败");
        }
        return sb.toString();
    }

    /**
     * 随机算出有数字有字母的密码（6位不加密）
     * @return
     */
    public static String generateRandomPassword() {
        int passwordLength = 6; // 密码长度
        String characters = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; // 密码字符范围
        Random random = new Random();
        StringBuilder passwordBuilder = new StringBuilder();
        for (int i = 0; i < passwordLength; i++) {
            int randomIndex = random.nextInt(characters.length());
            char randomChar = characters.charAt(randomIndex);
            passwordBuilder.append(randomChar);
        }
        return passwordBuilder.toString();
    }

    /**
     * 生成UUID唯一标识符
     * @return String
     */
    public static String generateRandomuuid(){
        // 生成一个随机的GUID
        UUID guid = UUID.randomUUID();
        // 将GUID转换为字符串形式输出
        String guidString = guid.toString();
        return guidString;
    }
}
